P-logic: property verification for Haskell programs
نویسنده
چکیده
Proof-supported logical verification of program properties has been a topic of research interest for more than 30 years. The feasibility of proof construction as a verification technique has been demonstrated through many examples of its application, yet it remains a technique rarely used in practice for a variety of reasons, both technical and sociological. The lack of verification logics for modern programming languages remains a strong deterrent to the use of proof-supported verification. This paper introduces P-logic, a verification logic for Haskell. P-logic is a modal mu-calculus that supports direct expression of recursively-defined properties of complex data structures. The term language of P-logic is Haskell. Logical assertions expressed in P-logic can be interleaved among definitions in a Haskell program text and can incorporate term variables bound in the program context. Properties of finite and infinite data structures can be expressed. The paper describes syntax, proof rules, and semantics of P-logic and provides a few examples of its use.
منابع مشابه
Programmed Strategies for Program Verification
Plover is an automated property-verifier for Haskell programs that has been under development for the past three years as a component of the Programatica project. In Programatica, predicate definitions and property assertions written in P-logic, a programming logic for Haskell, can be embedded in the text of a Haskell program module. Properties refine the type system of Haskell but cannot be ve...
متن کاملProgramming logics - an introduction to verification and semantics
The best ebooks about Programming Logics An Introduction To Verification And Semantics that you can get for free here by download this Programming Logics An Introduction To Verification And Semantics and save to your desktop. This ebooks is under topic such as programs: semantics and verification springer p-logic: property verià ̄¥cation for haskell programs logic, semantics and verification ...
متن کاملReflecting Demand in Programming Logics: a case study for Haskell
Haskell is a functional programming language whose evaluation is lazy by default. However, Haskell also provides pattern matching facilities which add a modicum of eagerness to its otherwise lazy default evaluation. This mixed or “non-strict” semantics can be quite difficult to reason with. This paper introduces a programming logic, P-logic, which neatly formalizes the mixed evaluation in Haske...
متن کاملAutomated Termination Analysis: From Term Rewriting to Programming Languages
Termination is a crucial property of programs. Therefore, techniques to analyze termination automatically are highly important for program verification. Traditionally, techniques for automated termination analysis were mainly studied for declarative programming paradigms such as logic programming and term rewriting. However, in the last years, several powerful techniques and tools have been dev...
متن کاملThe logic of demand in Haskell
Haskell is a functional programming language whose evaluation is lazy by default. However, Haskell also provides pattern matching facilities which add a modicum of eagerness to its otherwise lazy default evaluation. This mixed or “non-strict” semantics can be quite difficult to reason with. This paper introduces a programming logic, P-logic, which neatly formalizes the mixed evaluation in Haske...
متن کامل